package beanDefinitionRegistry;

import beanDefinition.BeanDefinition;

import java.util.HashMap;
import java.util.Map;

public class SimpleBeanDefinitionRegistry implements  BeanDefinitionRegistry{

    //定义一个容器，用来存储BeanDefinition对象
    private Map<String,BeanDefinition> beanDefinitionMap=new HashMap<>();

    //往注册表中注册bean，即bean定义加载后被封装成的BeanDefinition对象
    @Override
    public void registerBeanDefinition(String beanName, BeanDefinition beanDefinition) {
        beanDefinitionMap.put(beanName,beanDefinition);
    }

    //从注册表删除指定名称的bean
    @Override
    public void removeBeanDefinition(String beanName) {
beanDefinitionMap.remove(beanName);
    }

    //获取注册表中指定名称的Bean
    @Override
    public BeanDefinition getBeanDefinition(String beanName) {
        return beanDefinitionMap.get(beanName);
    }

    //判断注册表中是否已经注册了指定名称的bean,即BeanDefinition对象
    @Override
    public boolean containsBeanDefinition(String beanName) {
        return beanDefinitionMap.containsKey(beanName);
    }

    //获取注册表中所有bean的名称
    @Override
    public String[] getBeanDefinitionNames()
    {
        //获取key的set集合，再将set集合，转换为数组，数组的类型为string
        return beanDefinitionMap.keySet().toArray(new String[0]);
    }

    //获取注册表中注册的bean的个数
    @Override
    public int getBeanDefinitionCount() {
        return beanDefinitionMap.size();
    }

    //判断当前的bean名称在注册表中是否已经在使用了
    @Override
    public boolean isBeanNameInUse(String beanName) {
        return beanDefinitionMap.containsKey(beanName);
    }
}
